zstd
This library is a rust binding for the zstd compression library.
Documentation
1 - Add to cargo.toml
Using cargo-edit
Manually
# Cargo.toml
[]
= "0.9"
2 - Usage
This library provides Read
and Write
wrappers to handle (de)compression,
along with convenience functions to made common tasks easier.
For instance, stream::copy_encode
and stream::copy_decode
are easy-to-use
wrappers around std::io::copy
. Check the stream example:
use io;
// This function use the convenient `copy_encode` method
// This function does the same thing, directly using an `Encoder`:
Asynchronous support
The async-compression
crate
provides an async-ready integration of various compression algorithms,
including zstd-rs
.
Compile it yourself
zstd
is included as a submodule. To get everything during your clone, use:
git clone https://github.com/gyscos/zstd-rs --recursive
Or, if you cloned it without the --recursive
flag,
call this from inside the repository:
git submodule update --init
Then, running cargo build
should take care
of building the C library and linking to it.
Build-time bindgen
This library includes a pre-generated bindings.rs
file.
You can also generate new bindings at build-time, using the bindgen
feature:
cargo build --features bindgen
TODO
- Benchmarks, optimizations, ...
Disclaimer
This implementation is largely inspired by bozaro's lz4-rs.
License
- The zstd C library is under a dual BSD/GPLv2 license.
- This zstd-rs binding library is under a MIT license.